Package de.yaams.maker.programm.tabs

Source Code of de.yaams.maker.programm.tabs.OptionsTab

/**
*
*/
package de.yaams.maker.programm.tabs;

import java.awt.Component;
import java.util.ArrayList;
import java.util.HashMap;

import javax.swing.JComponent;

import org.apache.commons.lang.SystemUtils;

import de.yaams.maker.helper.FileHelper;
import de.yaams.maker.helper.JavaHelper;
import de.yaams.maker.helper.Log;
import de.yaams.maker.helper.SystemHelper;
import de.yaams.maker.helper.extensions.ExtentionManagement;
import de.yaams.maker.helper.gui.AE;
import de.yaams.maker.helper.gui.YFactory;
import de.yaams.maker.helper.gui.YSettingHelper;
import de.yaams.maker.helper.gui.bcb.BcbBuilder;
import de.yaams.maker.helper.gui.form.FormElement;
import de.yaams.maker.helper.gui.form.FormElementChangeListener;
import de.yaams.maker.helper.gui.form.FormInfo;
import de.yaams.maker.helper.gui.form.FormLink;
import de.yaams.maker.helper.gui.form.FormTextArea;
import de.yaams.maker.helper.gui.form.FormTextField;
import de.yaams.maker.helper.gui.form.core.FormBuilder;
import de.yaams.maker.helper.gui.form.core.FormHeader;
import de.yaams.maker.helper.gui.list.BasisListElement;
import de.yaams.maker.helper.gui.tabs.ProjectSplitTab;
import de.yaams.maker.helper.gui.tabs.SplitActionListElement;
import de.yaams.maker.helper.language.I18N;
import de.yaams.maker.programm.YAamsCore;
import de.yaams.maker.programm.environment.YLevel;
import de.yaams.maker.programm.plugins.PluginLoader;
import de.yaams.maker.programm.project.Project;

/**
* @author Nebli
*
*/
public class OptionsTab extends ProjectSplitTab {
  /**
   *
   */
  public static final String OPTIONS_INFO = "options.info";

  private static final long serialVersionUID = -8849887394292456819L;

  /**
   * Contains list, with ArrayList<BasisListElement> . Add
   * SplitActionListElement to create a new setting
   */
  public static final String EXADD = "options.list", EXSYS = "form.options.system";

  /**
   * Create a Optionstab
   */
  public OptionsTab() {
    super(buildList(), null);

    list.buildToolbar(null, null);

    buildGui();
    addSaveButton();
  }

  /**
   * Save chanced, overwrite it to implement it, and call addSaveTab() to add
   * the support button
   */
  @Override
  protected void saveIntern() {
    YAamsCore.save();
  }

  /**
   * Helpermethod to build the list
   *
   * @return
   */
  private static ArrayList<BasisListElement> buildList() {
    final ArrayList<BasisListElement> ary = new ArrayList<BasisListElement>();

    // info
    ary.add(new SplitActionListElement(I18N.t("Infos"), null, "info") {

      @Override
      protected Component getComponent(final Project p) {

        return addInfo();
      }
    });

    ary.add(new SplitActionListElement(I18N.t("System"), null, "monitor") {

      @Override
      protected Component getComponent(final Project p) {
        return addSystem();
      }
    });

    ary.add(new SplitActionListElement(I18N.t("Feedback"), null, "mail_web") {

      @Override
      protected Component getComponent(final Project p) {
        return addFeedback();
      }
    });

    // inform
    ExtentionManagement.work(EXADD, JavaHelper.createHashStringObj("list", ary));

    return ary;
  }

  /**
   * @return
   */
  public static Component addInfo() {
    // build form
    final FormBuilder f = new FormBuilder(OPTIONS_INFO);
    f.addHeader("basic", new FormHeader(I18N.t("Basics"), "info").setColumn(4));

    f.addElement("basic.yaams", new FormInfo("", YAamsCore.TITLE));

    if (YLevel.IS_ADVANCED) {
      f.addElement("basic.path", new FormTextField(I18N.t("Optionen"), YAamsCore.programPath.getAbsolutePath()));
      f.addElement("basic.temp", new FormTextField(I18N.t("Temp"), YAamsCore.tmpFolder.getAbsolutePath()));
      f.addElement("basic.system", new FormInfo(I18N.t("System"), SystemUtils.OS_NAME + " " + SystemUtils.OS_VERSION + " "
          + SystemUtils.OS_ARCH));
      f.addElement("basic.log", new FormInfo(I18N.t("Log level"), Log.ger.getLevel().toString()));
      f.addElement("basic.ylevel", new FormInfo(I18N.t("Program level"), YLevel.getName(YLevel.TYP)));
      f.addElement("basic.java", new FormInfo(I18N.t("Java"), SystemUtils.JAVA_RUNTIME_NAME + " " + SystemUtils.JAVA_VENDOR + " "
          + SystemUtils.JAVA_VERSION));
      f.addElement(
          "basic.ram",
          new FormInfo(I18N.t("RAM"), FileHelper.humanReadableByteCount(Runtime.getRuntime().freeMemory(), false) + " / "
              + FileHelper.humanReadableByteCount(Runtime.getRuntime().totalMemory(), false) + " ("
              + FileHelper.humanReadableByteCount(Runtime.getRuntime().maxMemory(), false) + ")"));
    }

    // add plugins
    f.addHeader("plugins", new FormHeader(I18N.t("Plugins"), "plugin").setColumn(8));
    for (String key : PluginLoader.getPlugins().keySet()) {
      f.addElement("plugins." + key, new FormInfo("", PluginLoader.get(key).getTitle()));
    }
    if (PluginLoader.getPlugins().keySet().size() <= 1) {
      f.addElement("plugins.znone", new FormInfo("", I18N.t("Keine Plugins gefunden. Installiere zuerst welche")).setInfoTxt(I18N
          .t("Öffne zur Installation den Katalog vom Starttab und wähle die Plugins aus. Danach musst du YAams neustarten.")));
    }
    // add special thanks
    f.addHeader("thankuser", new FormHeader(I18N.t("Speziellen Dank an"), "user").setColumn(4));
    f.addElement("thankuser.studio", new FormInfo("rpg-studio.de", "fürs Hosting, den Server und vieles mehr"));
    f.addElement("thankuser.steve", new FormInfo("Steve", "fürs Entwickeln"));
    f.addElement("thankuser.wolfsmutter", new FormInfo("Wolfsmutter", "fürs Testen und vieles mehr :)"));
    f.addElement("thankuser.evrey", new FormInfo("Evrey", "fürs Testen und ganz viel anderes"));
    f.addElement("thankuser.you", new FormInfo("Du?", "Wenn du willst, entwickle YAams mit! Mitarbeiter immer gesucht!"));

    // add thanks
    f.addHeader("thx", new FormHeader(I18N.t("Vielen Dank an"), "java").setColumn(8));
    f.addElement("thx.apachecommon", new FormLink("Apache Commons", "http://commons.apache.org"));
    f.addElement("thx.jidesoft", new FormLink("Jidesoft", "http://www.jidesoft.com"));
    f.addElement("thx.swingx", new FormLink("SwingX", "http://www.swinglibs.com"));
    f.addElement("thx.flamingo", new FormLink("Flamingo", "https://flamingo.dev.java.net"));
    f.addElement("thx.log4j", new FormLink("Log4J", "http://logging.apache.org/log4j/"));
    f.addElement("thx.ini4j", new FormLink("Ini4J", "http://ini4j.sourceforge.net"));
    f.addElement("thx.taskdialog", new FormLink("TaskDialog", "http://code.google.com/p/oxbow/"));
    f.addElement("thx.miglayout", new FormLink("MigLayout", "http://www.miglayout.com"));
    f.addElement("thx.xstream", new FormLink("XStream", "http://xstream.codehaus.org"));
    f.addElement("thx.fugueicons", new FormLink("Fugue Icons", "http://p.yusukekamiyamane.com/"));
    f.addElement("thx.crystalproject", new FormLink("Crystal Project", "http://crystalxp.net"));
    f.addElement("thx.faenza", new FormLink("Faenza", "http://tiheum.deviantart.com/art/Faenza-Icons-173323228"));
    f.addElement("thx.install4j", new FormLink("install4j", "http://www.ej-technologies.com/products/install4j/overview.html"));

    // add open buttons
    if (YLevel.IS_ADVANCED) {
      f.addButton("opts", YFactory.b(I18N.t("Öffne Optionen Ordner"), "opts_folder", new AE() {

        @Override
        public void run() {
          SystemHelper.viewFile(YAamsCore.programPath);

        }
      }));
      f.addButton("tmp", YFactory.b(I18N.t("Öffne Temp Ordner"), "open", new AE() {

        @Override
        public void run() {
          SystemHelper.viewFile(YAamsCore.tmpFolder);

        }
      }));
      f.addButton("log", YFactory.b(I18N.t("Öffne Log Datei"), "disk", new AE() {

        @Override
        public void run() {
          SystemHelper.viewFile(Log.file);

        }
      }));
    }

    // add modi
    // f.addChangeListener(new FormElementChangeListener() {
    //
    // @Override
    // public void stateChanged(FormElement form) {
    // setModified(true);
    //
    // }
    // });

    return f.getPanel(true);
  }

  /**
   * @return
   */
  public static Component addSystem() {
    // build form
    final FormBuilder f = new FormBuilder("options.system");
    f.addHeader("basic", new FormHeader(I18N.t("Basics"), "opts"));

    f.addElement(
        "basic.level",
        YSettingHelper
            .combo(null,
                I18N.t("Programm Level"),
                "gui.level",
                String.valueOf(YLevel.TYP),
                new String[] { "0", "1", "2" },
                new String[] { YLevel.getName(YLevel.BEGINNER), YLevel.getName(YLevel.ADVANCED),
                    YLevel.getName(YLevel.DEVELOPER) }).addChangeListener(new FormElementChangeListener() {

              @Override
              public void stateChanged(FormElement form) {
                YLevel.load(Integer.valueOf(form.getContentAsString()));

              }
            }));

    // add modi
    // f.addChangeListener(new FormElementChangeListener() {
    //
    // @Override
    // public void stateChanged(FormElement form) {
    // setModified(true);
    //
    // }
    // });

    return f.getPanel(true);
  }

  /**
   * @return
   */
  public static Component addFeedback() {

    final HashMap<String, String> data = new HashMap<String, String>();
    // build form
    final FormBuilder f = new FormBuilder("feedback");
    f.addHeader("basic", new FormHeader(I18N.t("Basics"), "info").setColumn(4));
    f.addElement("basic.atitle", createField(data, I18N.t("Titel"), "", "title"));
    f.addElement("basic.bname", createField(data, I18N.t("Name"), SystemUtils.USER_NAME, "user"));
    f.addElement(
        "basic.system",
        createField(data, I18N.t("System"), I18N.t("{0} ({1}) {2} - {3} ({4}) {5}", SystemUtils.OS_NAME, SystemUtils.OS_VERSION,
            SystemUtils.OS_ARCH, SystemUtils.JAVA_RUNTIME_NAME, SystemUtils.JAVA_VERSION, SystemUtils.JAVA_VM_INFO), "system"));
    f.addElement(
        "basic.contact",
        createField(data, I18N.t("Kontakt"), "", "contact").setInfoTxt(
            I18N.t("Wie ICQ/E-Mail, nur wichtig, wenn du eine Antwort wünschst.")));

    f.addHeader("mess", new FormHeader(I18N.t("Nachricht"), "mail"));
    f.addElement("mess.mess", new FormTextArea("", "") {

      @Override
      protected JComponent getInternElement() {
        return YFactory.createOverlayTextArea(area, I18N.t("Schreibe die Nachricht hier ein."));
      }
    });

    f.addButton("feedback", YFactory.b(I18N.t("Send Feedback"), "mail_web", new AE() {

      @Override
      public void run() {
        data.put("system", f.getElement("basic.system").getContentAsString());
        data.put("stack", "feedback " + f.getElement("basic.atitle").getContentAsString() + " "
            + f.getElement("basic.bname").getContentAsString() + " " + f.getElement("basic.contact").getContentAsString());
        data.put("messages", f.getElement("mess.mess").getContentAsString());
        SystemHelper.sendData("feedback", "Feedback - " + f.getElement("basic.atitle").getContentAsString(), data);

      }
    }, 32));

    // add modi
    // f.addChangeListener(new FormElementChangeListener() {
    //
    // @Override
    // public void stateChanged(FormElement form) {
    // setModified(true);
    //
    // }
    // });

    return f.getPanel(true);
  }

  /**
   * Helpermethod
   *
   * @param title
   * @param value
   * @param id
   * @return
   */
  private static FormElement createField(final HashMap<String, String> data, String title, String value, final String id) {
    data.put(id, value);
    return new FormTextField(title, value).addChangeListener(new FormElementChangeListener() {

      @Override
      public void stateChanged(FormElement e) {
        data.put(id, e.getContentAsString());

      }
    });
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.packandgo.programm.tabs.YaTab#getBottom()
   */
  @Override
  public JComponent getBottom() {
    return null;
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.packandgo.programm.tabs.YaTab#getIcon()
   */
  @Override
  public String getIcon() {
    return "opts";
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.packandgo.programm.tabs.YaTab#getTitle()
   */
  @Override
  public String getTitle() {
    return I18N.t("Options");
  }

  /*
   * (non-Javadoc)
   *
   * @see
   * de.yaams.maker.programm.tabs.YaTab#getBcb(de.yaams.maker.helper.gui.bcb
   * .BcbBuilder)
   */
  @Override
  protected void buildBcb(BcbBuilder bcb) {
    BasicTabEvent.buildBcb(bcb, getId());
  }

  /*
   * (non-Javadoc)
   *
   * @see de.yaams.maker.programm.tabs.YaTab#getId()
   */
  @Override
  public String getId() {
    return HomeTab.OPTIONS;
  }

  /**
   * This method will called, if reopen the tab or open it, to parse the
   * arguments
   *
   * @param id
   */
  @Override
  public void parseArguments(HashMap<String, String> arguments) {
    // select?
    if (arguments.containsKey("select")) {
      selectActionByIcon(arguments.get("select"));
    }

  }

}
TOP

Related Classes of de.yaams.maker.programm.tabs.OptionsTab

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.